package mybatis.interfaces;

import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModelProperty;

import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;

/**
 * 使用 and 连接的 > 操作
 *
 * @author CKC
 */
public interface IGreaterThanQueryCondition extends Serializable {

    /**
     * 大于, 仅支持不同字段and连接，eg: gt[age]=20 表示 age > 20
     * <p>
     * 备注：为了与SwaggerUI结合，产生Swagger文档
     *
     * @return
     */
    @ApiModelProperty(name = "gt[?]", value = "大于, 仅支持不同字段and连接，eg: gt[age]=20 表示 age > 20 ")
    @JsonIgnore
    default String getGtSwaggerView() {
        return null;
    }

    /**
     * getGt
     *
     * @return
     * @see #getGtSwaggerView
     */
    Map<String, String> getGt();

    /**
     * setGt
     *
     * @param gt
     * @see #getGtSwaggerView
     */
    void setGt(Map<String, String> gt);

    /**
     * addGt
     *
     * @param field
     * @param value
     * @see #getGtSwaggerView
     */
    default void addGt(String field, String value) {
        if (getGt() == null) {
            setGt(new HashMap<>(8));
        }
        getGt().put(field, value);
    }

    /**
     * setGt(null)
     *
     * @see #getGtSwaggerView
     */
    default void clearGt() {
        setGt(null);
    }

    /**
     * isEmptyGt
     *
     * @return
     */
    @ApiModelProperty(hidden = true)
    @JsonIgnore
    default boolean isEmptyGt() {
        return getGt() == null || getGt().isEmpty();
    }
}
